package com.groupseven.backend.mapper;

import com.groupseven.backend.domain.Permission.PermissionItem;
import com.groupseven.backend.domain.Sidebar.MySidebar;
import com.groupseven.backend.domain.Sidebar.SidebarItems;
import com.groupseven.backend.domain.Sidebar.SidebarMap;
import com.groupseven.backend.domain.Sidebar.SubSidebarMap;
import com.groupseven.backend.domain.User.User;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;
import java.util.Map;
import java.util.Set;

@Mapper
public interface AuthoritiesMapper {
    /**
     * @Author 王志华
     * 查询管理员的浏览权限
     * @return
     */
    List<SidebarItems> AdminSidebar();

    /**
     * @Author 王志华
     * 查询用户的浏览权限
     * @return
     */
    List<SidebarItems> UserSidebar();
    /**
     * @Author 王志华
     * 查询管理员的子导航栏浏览权限
     * @return
     */
    List<SidebarItems> AdminSubSidebar();

    /**
     * @Author 王志华
     * 查询用户的子导航栏浏览权限
     * @return
     */
    List<SidebarItems> UserSubSidebar();

    /**
     * @Author 王志华
     * @param user 用户类型
     * @return MySidebar
     */
    MySidebar getMySidebar(User user);

    /**
     * @Author 王志华
     * @return
     */
    List<SidebarMap> getSidebarMap();

    /**
     * @Author 王志华
     * @return
     */
    List<SubSidebarMap> getSubSidebarMap();
    /**
     * @Author 王志华
     */
    int modifyMySidebar(MySidebar mysidebar);
    /**
     * @Author 王志华
     */
    List<String> getMyOperationAuthorities(User user);
    /**
     * @Author 王志华
     */
    Set<String> getPermissionsByUsername(String Username);

    /**
     * @Author 王志华
     * @param Username
     * @return
     */
    int resetUserPermission(String Username);

    /**
     * @Author 王志华
     * @param PermissionNumber
     * @param Username
     * @return
     */
    int updateUserPermission(int PermissionNumber,String Username);

    /**
     * @Author 王志华
     * @param Rolenumber
     * @return
     */
    List<PermissionItem> getParentPermissiontreeByRolenumber(int Rolenumber);

    /**
     * @Author 王志华
     * @param Rownumber
     * @return
     */
    List<PermissionItem> getSubPermissiontreeByRolenumber(int Rownumber);

    /**
     * @Author 王志华
     * @return
     */
    List<PermissionItem> getParentPermissions();

    /**
     * @Author 王志华
     * @return
     */
    List<PermissionItem> getSubPermissions();

    /**
     * @Author 王志华
     * @param Rolenumber
     * @return
     */
    int deletePermissionsByRole(int Rolenumber);

    /**
     * @Author 王志华
     * @param Rolenumber
     * @param Permissionid
     * @return
     */
    int addPermissionByRoleAndPermid(int Rolenumber,int Permissionid);

    /**
     * @Author 王志华
     * @param query
     * @return
     */
    int addPermissionsByRoleAndPermid(Map<String,Object> query);

    /**
     * @Author 王志华
     * @param Usertype
     * @return
     */
    Set<String> getPermissionsByUsertype(int Usertype);

    /**
     * @Author 王志华
     * @param query
     * @return
     */
    int multi_deleteByRolenumber(Map<String,Object> query);

//    int updatePermissionsByRole(int Rolenumber,)

    Set<String> getPermissionsByRole(int Role);

}
